package com.cskaoyan.javase.oop.exercise5;

/**
 * @description: Scanner的使用问题
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

import java.util.Scanner;

/**
 * Scanner的使用问题：
 *  当使用Scanner接收完一个int类型后，立刻接收String类型，会直接跳过当前次接收
 *  因为nextLine这个方法会接收回车的输入，把回车当成了字符串接收了，所以它就不等你了
 *
 *  怎么解决？
 *  1，再创建一个Scanner对象
 *  2，取巧一点的，先用sc.nextLine()接收回车，再接收字符串输入
 *  3，全部用nextLine接收，然后把字符串转换成各种类型
 *
 *  Integer是int类型的包装类：Java万物皆对象，但可惜基本数据类型就不是对象，所以java为了弥补这个缺点引入了包装类的概念
 *  四类八种基本数据类型都有包装类
 *
 *  Scanner细节很多，比如说怎么接收一个char，需要去百度，谷歌，学技术要擅于站在巨人的肩膀上
 *  低智商：擅长复制粘贴
 *
 *  class int包装类{
 *      int a;
 *  }
 *
 *
 */
public class Demo3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        /*方法一
        Scanner sc2 = new Scanner(System.in);
        System.out.println("请输入一个int数值:");
        int a = sc.nextInt();
        System.out.println("请输入一个String字符串：");
        String s = sc2.nextLine();
        System.out.println(s);*/

        /*方式二
        System.out.println("请输入一个int数值:");
        int a = sc.nextInt();
        //这里有一个回车
        sc.nextLine();
        System.out.println("请输入一个String字符串：");
        String s = sc.nextLine();
        System.out.println(s);*/

        //方式三
        System.out.println("请输入一个int数值:");
        String  a = sc.nextLine(); //这里虽然是String接收的，但是你知道这里是一个int数
        //需要把一个字符串数值转换成一个int
        //Integer.parseInt()
        int i = Integer.parseInt(a);
        System.out.println(i);

        //这里有一个回车
        //sc.nextLine();
        System.out.println("请输入一个String字符串：");
        String s = sc.nextLine();
        System.out.println(s);

        //sc.nextchar
        //需要转换成字符串，然后把字符串转换成字符数组
        //再从字符数组中拿到这个字符

    }

    //public void Demo3(){}
    //Method name 'Demo3' is the same as its class name.
    //public static void Demo3(){} 虽然语法允许 但是你不要这么做
}
